Computing systems and methods for controlling current in vehicle motors

ABSTRACT

A motor controller is described that is coupled to a drive motor and a battery pack of a vehicle. The motor controller is configured to determine a maximum discharge current of the battery pack and a rotational velocity of the drive motor. Based on the determined rotational velocity of the drive motor, the motor controller is configured to identify a curve that defines a relationship between the maximum discharge current of the battery pack and a drive current limit of the motor controller. Based on the identified curve and the determined maximum discharge current of the battery pack, the motor controller is configured to determine the drive current limit of the motor controller. The motor controller is further configured to convert a discharge current from the battery pack to a drive current subject to the determined drive current limit and supply the drive current to the drive motor.

RELATED APPLICATIONS

This application claims the benefit of priority as a continuation under35 U.S.C. § 120 to U.S. application Ser. No. 16/277,640 filed Feb. 15,2019, entitled “Computing Systems and Methods for Controlling Current inVehicle Motors”, the contents of which are hereby incorporated byreference in their entirety for all purposes.

FIELD OF THE DISCLOSURE

The present disclosure relates generally to electric or hybrid electricvehicles and more particularly to control systems for use therein.

BACKGROUND

Vehicles, such as hybrid-electric and all-electric vehicles may includeone or more electric drive motors that convert electrical energy intomechanical energy that applies torque to the drive shaft and thereby tothe wheels. A drive motor may be powered by various energy sources, suchas a battery pack, which supplies direct drive current that a motorcontroller may convert to an alternating drive current. The motorcontroller may supply the alternating drive current to the drive motorto cause the drive motor to produce torque that is transferred to thewheels of the vehicle to propel the vehicle forward.

SUMMARY I. Overview

Increasingly, vehicles, such as fully electric and hybrid-electric(“hybrid”) vehicles, are being employed for various applications.Various embodiments will be described that provide various advantagesfor electric and hybrid vehicles. The features of these variousembodiments may be combined with each other in accordance with thedesired system requirements. It should be understood that theseembodiments may be combined with each other in various combinations.

Additionally, many of the examples and embodiments described hereinrefer to a motor controller that performs various functions and providesvarious functionality. According to various implementations andexamples, reference is made to a motor controller available from CurtisInstruments of Mt. Kisco, N.Y. and described in “Manual Models 1234,1236 and 1238 AC Induction Motor Controllers, OS11 with VCL.”

At a high level, this disclosure relates to devices, such as a motorcontroller, that may be configured to control the delivery andconversion of power from a battery pack to a drive motor of a vehicle.Such improvements more specifically involve controlling the current andvoltage that a motor controller supplies to an electric motor (referredto herein as a “drive motor”) of an electric or hybrid-electric vehicle,and more particularly, to controlling 3-phase AC (alternating current)voltage and AC current that the motor controller supplies to the drivemotor and converts from a direct discharge current supplied by thebattery pack. The techniques described herein may provide variousimprovements in the performance characteristics of vehicles that includean electric motor.

A motor controller for an electric or hybrid-electric vehicle maycontrol various components of the vehicle, such as the vehicle'scontrols (e.g., steering, braking, transmission, and other controls) andthe vehicle's driving means (e.g., an engine or motor). The motorcontroller may generally include a computing device that executesprogram instructions that cause the motor controller to receive inputsand to control various components and systems of the vehicle. Asexamples, the motor controller may be coupled to and/or may control adrive motor, a battery pack, and a set driver controls. The motorcontroller may be coupled to, and may control, various other componentsof the vehicle as well.

The techniques of this disclosure are generally applicable to vehiclesthat are equipped with electrical drive motors, such as DC (directcurrent)- or AC (alternating current)-powered drive motors.

According to one example, a vehicle may be equipped with a DC motorcontroller that controls the supply of power from a battery pack to theDC drive motor. The power that the DC motor controller supplies to theDC drive motor may take the form of a current and voltage. The motorcontroller may vary parameters of the DC voltage and current to controlthe speed of the drive motor and the torque generated by the drivemotor.

In an example where the vehicle is equipped with an AC-powered drivemotor, the motor controller may be programmatically configured tocontrol the conversion of the direct battery discharge current to a3-phase AC voltage waveform consisting of three sinusoidal waveformsthat are electrically displaced by 120° that the motor controllersupplies to the drive motor and when supplied, causes the drive motor togenerate torque that is then applied to the vehicle's wheels.

As a part of the DC-to-AC conversion process, the motor controller mayvary parameters of the 3-phase AC voltage and AC current produced duringthe conversion, and in this way control the speed of the drive motor andthe torque generated by the drive motor.

The RMS (root mean squared) drive current that the motor controllerapplies to the drive motor may be proportional to the amount of torquethat the drive motor generates. For instance, if the motor controllersupplies a low RMS drive current, the drive motor may generate arelatively low amount of torque. Conversely, if the motor controllersupplies a high RMS drive current, the drive motor may generate arelatively high amount of torque. However, the process of determiningparameters for the RMS drive current and voltage may vary based on anumber of different factors, some of which may change in real-time.

As one example, the process of determining the parameters of the RMSdrive voltage and drive current may vary depending on the maximumdischarge current that the battery pack can produce at the current time(i.e., the charge level of the battery pack). In some implementations,the motor controller may determine the maximum discharge current of thebattery pack, and based on the maximum discharge current, may determinea corresponding limit on the RMS drive current that the motor controllermay supply to the drive motor.

For example, if the battery pack has a maximum discharge current of 200amps, the motor controller may set a limit on the maximum RMS drivecurrent that the motor controller may supply to the drive motor(referred herein to as the “RMS drive current limit”) to 40% of themaximum RMS drive current that the motor controller is capable ofsupplying to the drive motor. As the maximum discharge current of thebattery pack decreases, for instance due to the battery pack's level ofcharge decreasing, the motor controller may accordingly (e.g., linearly)decrease the RMS drive current limit based on the decreased maximumdischarge current of the battery pack. In some implementations, themotor controller could maintain a proportional relationship between thebattery pack's maximum discharge current (measured in amps) and the RMSdrive current limit.

While a linear relationship between a battery pack's maximum dischargecurrent and the RMS drive current limit might not have many undesirableeffects on performance for a vehicle equipped with a relatively largecapacity battery pack, the same proportional relationship between amaximum discharge current of a battery pack and the RMS drive currentlimit of the motor controller may result in undesirable effects onperformance for a vehicle that is equipped with a relatively smallcapacity battery pack. This may be the case, at least in part, becausesmaller battery packs might not be capable of outputting the same amountof discharge current as larger battery packs while at the samepercentage of charge without rapidly discharging the battery pack.Consequently, if a motor controller were configured to use the sameproportional relationship between the maximum discharge current of arelatively smaller battery pack and the RMS drive current limit, and thesmaller battery pack was at a low level of charge, the smaller batterypack may output a lower drive current than a relatively larger batterypack would output at a similar level of charge. As a result of thesmaller maximum discharge current supplied by the relatively smallerbattery pack, the motor controller would consequently supply a smallerRMS drive current to the drive motor. The drive motor would, in turn,generate a lower amount of torque than would a larger battery pack,which may constitute unsuitable performance in some scenarios.

For instance, the relatively low amounts of torque that a smallerbattery pack may provide at low speeds may be inadequate for varioustypes of driving conditions, such as off-road driving conditions. Whileoperating at low speed in off-road conditions, an off-road vehicle mayrequire the drive motor to output a relatively high tractive effort(i.e., force exerted on a vehicle's wheels), for instance, to overcomegrades or obstacles. Further, while high amounts of tractive effort maybe required at lower speeds, only moderate amounts of tractive effortmay be required at higher speeds.

This disclosure provides several advantages that may address theaforementioned problems. First, a motor controller may be configured tooperate in conjunction with battery packs of relatively small capacitieswhile still allowing the drive motor to output high tractive effort atlow speeds, thereby allowing a vehicle to be engaged in low-speedoperation even with smaller battery pack capacities. Second, thisdisclosure advantageously allows a drive motor to output moderatetractive effort at high speeds, which results in range extension of thevehicle at higher speed. Third, this disclosure advantageously allows amotor controller to transition between high and moderate tractive effortwhen the vehicle is between low speeds and high speeds. The techniquesof this disclosure may provide other advantages as well.

To provide the advantages described above, the motor controller may beconfigured to define and/or store a plurality of curves, each of whichdefines a respective set of relationships between the maximum dischargecurrent values of a vehicle's battery pack, and corresponding RMS drivecurrent limits that define the maximum amount of RMS drive current thatthe motor controller may supply to the drive motor. Each curve may bevalid for a set of operating conditions that the motor controllerobtains from various components of the vehicle. These operatingconditions may take various forms.

For example, the operating conditions that the motor controller uses toselect a given curve from the set of curves may be related to theoperation of various components of the vehicle such as the vehicle'sbattery pack, drive motor, accelerator pedal, etc. For instance, theoperating conditions that the motor controller uses to select a givencurve may include the rotational speed of the drive motor (e.g.,measured in RPM), and/or a charge level of the battery pack at a giventime.

According to an implementation, each curve may be valid for a differentrange of rotational speeds of the drive motor. As an example, a firstcurve may be valid for a first rotational speed range of the drivemotor, such as a low-speed range, and a second curve may be valid for asecond, different rotational speed range of the drive motor, such as ahigh-speed range. While two curves, a high-speed curve and a low speedcurve, have been described for the purpose of example, the set of curvesmay include three or more curves as well.

Once a curve is identified, the operations for determining the RMS drivecurrent limit may take various forms. For example, based on a selectedcurve, the motor controller may utilize a mapping function to map themaximum discharge current that the battery pack is capable of supplyingat a given time to an RMS drive current limit value as defined by theselected curve. In general, the mapped RMS drive current limit specifiedby the selected curve may be directly related to the maximum dischargecurrent that the battery pack is capable of supplying at a given time.

Over time, as the battery pack's charge level decreases due to thebattery pack supplying power that the motor controller converts andsupplies to the drive motor, the maximum discharge current that thebattery pack can safely supply decreases. A battery management system(BMS) may monitor the battery pack for such changes and may report themaximum discharge current of the battery pack to the motor controller(e.g., via a CANbus, etc.) periodically. Based on receiving an updatedmaximum discharge current from the BMS, the motor controller may updatethe RMS drive current limit.

As discussed above, the motor controller may be configured to identify,based on the rotational speed of the drive motor, a curve that definesmappings between maximum discharge current values of the battery packand RMS drive current limits. However, in some cases, the rotationalvelocity of the drive motor may not be within any of the rotationalspeed ranges associated with any curve. In such instances, the motorcontroller may use the endpoints of the two closest curves to determinethe RMS drive current limit. For instance, if the rotational speed ofthe drive motor falls between an endpoint of a low speed curve and thestarting point of a high-speed curve for the maximum discharge currentof the battery pack at a given time, the motor controller may determinethe RMS drive current limit by interpolating between the endpoint of thelow-speed curve and the starting point of the high-speed curve based onthe rotational speed of the drive motor.

After determining an RMS drive current limit, the motor controller maythen convert the discharge current supplied by the battery pack to anRMS drive current, subject to the RMS drive current limit. The motorcontroller may then supply the limited (if necessary) RMS drive currentto the drive motor. The operations for obtaining the discharge currentfrom the battery pack and converting the discharge current to an RMSdrive current, subject to a determined RMS drive current limit, may takevarious forms.

In some implementations, converting the discharge current from thebattery pack to an RMS drive current and supplying the RMS drive currentto the drive motor may be performed by the motor controller in responseto detecting that the accelerator pedal has been depressed. For example,in response to determining that the accelerator of the vehicle has beendepressed, the motor controller may determine a position of theaccelerator pedal. In some implementations, the position of theaccelerator pedal may correspond linearly to the requested RMS drivecurrent. For instance, depressing the accelerator pedal by 40% maycorrespond to a request for 40% of the maximum RMS drive current themotor controller can produce. Other relationships between the positionof the accelerator pedal and the requested RMS drive current are alsopossible. Based on the determined position of the accelerator pedal, themotor controller may then determine an amount of RMS drive current thatthe motor controller applies to the drive motor.

As noted above, the RMS drive current limit may generally correspond toa percentage of the maximum RMS drive current that the drive motorcontroller is capable of producing. When the motor controller convertsthe discharge current of the battery pack to an RMS drive current, themotor controller uses the RMS drive current limit, if necessary, tolimit the amount of RMS drive current the motor controller produces.

For instance, and for the purposes of the examples discussed herein, amotor controller may be capable of producing a maximum RMS drive currentof 650 amps. However, the motor controller may have an RMS drive currentlimit set to 50%. Due to the RMS drive current limit set to 50% of themaximum RMS drive current, the motor controller limits the produced RMSdrive current to 325 amps (i.e., 50% of the maximum RMS drive currentthat the motor controller is capable of producing). Consequently, if thedetermined position of the accelerator pedal indicates a request for 80%of the maximum 650 amps of RMS drive current (i.e., 520 amps), the motorcontroller may limit the provided RMS drive current to 325 amps.

In this way, the motor controller may be configured to execute code thatcauses the motor controller to limit the load on the battery pack,thereby limiting the battery pack discharge current, the RMS drivecurrent that the motor controller supplies to the vehicle's drive motor,and consequently the torque produced by the motor controller.

Various functions and examples with respect to controlling the currentand voltage provided by a battery pack to a drive motor have beendescribed and will be described in greater detail herein. In one aspect,a motor controller coupled to a drive motor and a battery pack of avehicle is provided. The motor controller further includes at least oneprocessor, a non-transitory computer-readable storage medium, andprogram instructions stored on the non-transitory computer-readablestorage medium that are executable by the at least one processor. Theprogram instructions cause the motor controller to determine a maximumdischarge current of the battery pack and determine a rotationalvelocity of the drive motor. Based on the determined rotational velocityof the drive motor, the motor controller identifies a curve that definesa relationship between the maximum discharge current of the battery packand a drive current limit of the motor controller. Based on theidentified curve and the determined maximum discharge current of thebattery pack, the motor controller determines the drive current limit ofthe motor controller. The program instructions also cause the motorcontroller to convert a discharge current from the battery pack to adrive current subject to the determined drive current limit, and thensupply the drive current to the drive motor.

In another aspect, a tangible, non-transitory computer readable mediumis provided. The tangible, non-transitory computer readable medium hasstored thereon instructions that, when executed by a processor, cause amotor controller of a vehicle to perform functions. The functionsinclude determining a maximum discharge current of a battery packcoupled to the motor controller and determining a rotational velocity ofa drive motor coupled to the motor controller. The functions alsoinclude, based on the determined rotational velocity of the drive motor,identifying a curve that defines a relationship between the maximumdischarge current of the battery pack and a drive current limit of themotor controller. The functions also include, based on the identifiedcurve and the determined maximum discharge current of the battery pack,determining the drive current limit of the motor controller. Thefunctions also include converting a discharge current from the batterypack to a drive current subject to the determined drive current limitand supplying the drive current to the drive motor.

In another aspect a method of operating a motor controller of a vehicleis provided. The method includes determining a maximum discharge currentof a battery pack coupled to the motor controller and determining arotational velocity of a drive motor coupled to the motor controller.The method also includes, based on the determined rotational velocity ofthe drive motor, identifying a curve that defines a relationship betweenthe maximum discharge current of the battery pack and a drive currentlimit of the motor controller. The method also includes, based on theidentified curve and the determined maximum discharge current of thebattery pack, determining the drive current limit of the motorcontroller. The method also includes converting a discharge current fromthe battery pack to a drive current subject to the determined drivecurrent limit and supplying the drive current to the drive motor.

BRIEF DESCRIPTION OF THE DRAWINGS

Features, aspects, and advantages of the presently disclosed technologymay be better understood with regard to the following description,appended claims, and accompanying drawings where:

FIG. 1 is a conceptual diagram of a single-axle drive electric vehiclehaving a single drive motor;

FIG. 2 is a conceptual diagram of a dual-axle drive electric vehiclehaving two drive motors;

FIG. 3 is a conceptual diagram of a single-axle drive hybrid electricvehicle configuration having a single drive motor;

FIG. 4 illustrates a first graph and a second graph of a vehicleacceleration event;

FIG. 5 illustrates a graph of a relationship between a drive motor speedand an RMS drive current limit according to an example implementation,as well as a set of input values for the graph;

FIG. 6 illustrates a curve showing a relationship between a maximumbattery discharge current and a drive current limit according to anexample implementation, as well as a set of input values for the graph;

FIG. 7 illustrates a curve showing a relationship between a maximumbattery discharge current and a drive current limit according to anotherexample implementation, as well as a set of input values for the graph;

FIG. 8 illustrates a first graph and a second graph of a vehicleacceleration-deceleration event, according to an example implementation;

FIG. 9 illustrates a first graph and a second graph of a vehicleacceleration-deceleration event, according to another exampleimplementation;

FIG. 10 illustrates a graph associated with selecting a high-speed rangecurve or a low-speed range curve based on a drive motor speed, accordingto an example implementation;

FIG. 11 illustrates a graph of the steady state maximum performancecharacteristics of a drive motor;

FIG. 12 is a flowchart illustrating a method for operating a motorcontroller of a vehicle, according to an example implementation.

In addition, the drawings are for the purpose of illustrating exampleembodiments, but it is understood that the present disclosure is notlimited to the arrangements and instrumentality shown in the drawings.

DETAILED DESCRIPTION II. Example Configurations

Referring now to the figures, like numerals may refer to like partsthroughout the figures. In general, the figures depict exampleconfigurations of vehicles and their components with which theembodiments, implementations, and examples of this disclosure may beimplemented.

FIG. 1 shows a conceptual diagram of a single-axle drive electricvehicle 100 having a single-drive motor 104. Vehicle 100 includes frontwheels, a conventional steering mechanism coupled to the front wheels, amotor controller 102 that is coupled to the drive motor 104 and abattery management system (BMS) 108 that is in turn coupled to a batterypack 106.

Battery pack 106 is electrically connected to the DC power inputs ofmotor controller 102, which converts the DC power from battery pack 106to three-phase AC power accepted by the drive motor 104. According to anexample implementation, motor controller 102 may be a Curtis 1238E ACInduction Motor Controller, but may generally comprise any suitable DCor AC motor controller.

Battery pack 106 is also electrically connected to BMS 108, whichmonitors the battery pack 106 and provides appropriate signals to motorcontroller 102 to limit the amount of power allocated to drive motor104, thereby protecting the battery pack 106 from damage. According toone implementation, BMS 108 may comprise an Orion BMS-2, but may takevarious other forms as well.

Motor controller 102 may be in communication with BMS 108 and/oradditional devices that are connected, for example, through a sharedcommunication medium such as a CANbus. Motor controller 102 is alsocoupled to driver controls 110 and to drive motor 104.

The conventional steering mechanism may provide steering capability forvehicle 100. An operator of the vehicle 100 may also use driver controls110 (e.g., an accelerator pedal) to control various functions and/ormodes or operation of the vehicle 100.

Motor controller 102 may comprise a programmable computing device suchas a central processing unit (CPU), application-specific integratedcircuit (ASIC), programmable logic controller (PLC), field-programmablegate array (FPGA), digital signal processor (DSP), system on a chip(SoC), or another type of computing device. Motor controller 102 mayalso comprise power electronics that may be used to power the drivemotor 104. Alternatively, the power electronics may be provided in aseparate power controller as is known in the art. Motor controller 102may generally be configured to control the operation of variouscomponents coupled to motor controller 102 such as, for example, the CANdevices, battery pack 106 (via BMS 108), and drive motor 104.

In vehicle 100, drive motor 104 may comprise a three-phase AC inductionmotor, a three-phase surface permanent magnet motor, or a three-phaseinternal permanent magnet motor, among other possibilities. Drive motor104 may be drivingly connected via a fixed gear reduction to aconventional two-speed axle and a differential unit. The two-speed gearand differential may preferably comprise a driver-selectable high gearratio and a driver-selectable low gear ratio. The fixed gear reductionmay comprise a fixed ratio belt reduction. The output shafts of thedifferential are preferably connected via a fixed ratio chain drive tothe rear drive wheels of the electric vehicle. It will also beappreciated that the two-speed gear and differential may also comprise amultiplicity of driver-selectable gear ratios.

Vehicle 100 may be powered by an energy storage system with sufficientenergy and power capacity to propel the vehicle 100. In a preferredembodiment, the energy storage system may be a battery pack 106including a number of lithium ion battery modules arranged in series andparallel that may provide a suitable voltage for effective operation ofmotor controller 102 and drive motor 104.

According to various examples, motor controller 102 may control theoperation of vehicle 100 and more particularly drive motor 104 inresponse to receiving control signals, inputs, etc. (e.g. from drivercontrols 110, drive motor 102, BMS 108, and/or various other componentsof vehicle 100).

According to an implementation, motor controller 102 may control therotational speed and/or torque of drive motor 104 by applying power frombattery pack 106 to drive motor 104. In response to receiving theapplied power, drive motor 104 may, in turn, apply force in the form oftorque to a selected gear, which causes the axle connected to theselected gear and a chain drive to rotate, which causes the rear wheelsof vehicle 100 to rotate.

More particularly, to apply power from battery pack 106 to drive motor104, motor controller 102 may receive, via the CANbus from BMS 108, anindication of the maximum amount of direct discharge current thatbattery pack 106 may provide, which may be referred to as a “maximumdischarge current.” Based on the maximum discharge current, motorcontroller 102 may initiate a flow of discharge current from batterypack 106 subject to the maximum discharge current. In response toreceiving the discharge current from battery pack 106, motor controller102 may convert the discharge current to a 3-phase RMS drive current.Finally, motor controller 102 may supply the 3-phase RMS drive currentto drive motor 104 to cause drive motor 104 to generate torque.

As mentioned above, motor controller 102 may generally control theoperation of various components of vehicle 100 via driver controls 110.These may include, as illustrated in FIG. 1 , an accelerator pedal 111.Driver controls 110 may also include a throttle potentiometer wiperoperative to indicate the position of the accelerator pedal 111, whichmay provide information to the motor controller 102 regarding the amountof driving torque desired by the vehicle operator to propel the vehicle100.

FIG. 2 illustrates a conceptual diagram of a vehicle 200 according toanother example implementation. Vehicle 200 may be generally similar tovehicle 100 in that vehicle 200 may be an electrical vehicle. However,vehicle 200 may differ from vehicle 100 due to inclusion of two drivemotors rather than the single drive motor 104 of vehicle 100. Vehicle200 may further differ from vehicle 100 of FIG. 1 in that the dualmotors of vehicle 200 drive not only the rear axle as illustrated inFIG. 1 , but both a front axle and a rear axle.

Further, vehicle 200 may include two motor controllers and two drivemotors. These dual motor controllers of FIG. 2 may generally beconfigured to control the operation of various components of the vehicle200. Each motor controller of the dual motor controllers may beconfigured in a manner similar to motor controller 102, but each motorcontroller may control a respective drive motor, denoted as motor 1 andmotor 2 in FIG. 2 .

In vehicle 200, motor 1 and motor 2 may be arranged in-line anddrivingly connected via a fixed ratio belt drive to a high low transfercase. The high low transfer case preferably comprises a driver-selectedhigh gear ratio and driver-selected low gear ratio. The dual in-linemotors, motor 1 and motor 2, may be identical in mechanical andelectrical properties and may be drivingly connected to rotate around acommon shaft.

The high-low transfer case may be drivingly connected to an input shaftof an offset transfer case. The offset transfer case is operable torotate output shaft 1 and output shaft 2 of the offset transfer case tothereby divide the mechanical power coming to or from drive motor 1 anddrive motor 2. Output shaft 1, in turn, is drivingly-connected to a rearaxle via a rear differential, which is connected to the final drives andwheels on the rear axle. Similarly, output shaft 2 is drivinglyconnected to the front axle via the front differential, which isconnected to the wheels on the front axle. The rear differential and thefront differential may be equipped with conventional lock-updifferential clutches as is done in conventional four-wheel drivevehicles.

FIG. 3 illustrates a conceptual diagram of a vehicle 300 according toanother example implementation. Vehicle 300 may be generally similar tovehicle 100 in that vehicle 300 may be a single axle-drive vehicle thatincludes a single motor controller. However, vehicle 300 may differ fromvehicle 100 in that vehicle 300 is a hybrid electric vehicle thatincludes a thermal engine, a generator, and a generator controller thattogether operate as a Range Extender. For example, the range of thevehicle 300 might not be limited by the energy stored in the batterypack, as the range may be extended by the energy stored in the fuel tankof the thermal engine. It will be apparent that the vehicle 300 isnonetheless propelled only by the torque provided by the drive motor,and that the techniques for controlling current and voltage as describedwith respect to the vehicle 100, which may provide increased torque andextended range, are fully operable with respect to the vehicle 300 shownin FIG. 3 . It will also be apparent that the Range Extender describedwith reference to FIG. 3 may also be operable in connection with thedual axle drive electric vehicle 200 of FIG. 2 .

III. Drive Current and Voltage Control

A. Small Battery Pack Configurations

According to various implementations, the techniques discussed hereinmay be applicable to various vehicle configurations such as, forexample, vehicles 100, 200, and 300. As discussed above, such fullyelectric and hybrid-electric (“hybrid”) vehicles may include a batterypack that provides a direct discharge current that a motor controllerconverts to an RMS drive current, which the motor controller thensupplies to a drive motor, producing a torque that is transferred to thewheels of the vehicle to propel the vehicle.

As noted above, embodiments discussed herein provide several advantages.First, a motor controller may be configured to operate in conjunctionwith battery packs of relatively small capacity while still allowing thedrive motor to output a relatively high tractive effort at low speeds.Second, according to some implementations, a drive motor may output arelatively moderate tractive effort at relatively high speeds, which mayresult in range extension of the vehicle at higher speed. Third, someembodiments discussed herein provide for a motor controller totransition between providing high and moderate tractive effort when thevehicle is transitioning between low speeds and high speeds. At a highlevel, motor controller 102 may be configured to limit and control theconversion of direct discharge current from the battery pack to an RMSdrive current to achieve the aforementioned advantages. Theimplementations discussed herein may provide other advantages as well.

For the purpose of illustrating some of these advantages, FIG. 4illustrates a first graph 410 and a second graph 420 of a vehicleacceleration event, wherein the vehicle does not utilize the drivecurrent limiting control implementations discussed herein. In the firstgraph 410, time is plotted on the x-axis, and the rotational speed ofthe drive motor in RPM is plotted on the y-axis. In second graph 420,time is likewise plotted on the x-axis, and the RMS drive current aswell as the battery pack discharge current, which are both measured inamperes, are plotted on the y-axis. The first graph 410 furtherillustrates the drive motor speed at three times, referred to as Time 1,Time 2, and Time 3. Likewise, the second graph 420 illustrates the RMSdrive current and battery pack discharge current at the same threetimes, Time 1, Time 2, and Time 3.

At Time 1, the drive motor speed is zero. Shortly after Time 1, thevehicle operator depresses the accelerator pedal 111, which causes motorcontroller 102 to generate an RMS drive current which, in turn, causesdrive motor 104 to generate a driving torque thereby causing the vehicleto accelerate. After a short delay, the torque applied by drive motor104 is sufficiently high to cause the vehicle to begin accelerating inthe example illustrated in FIG. 4 .

After Time 1, the RMS drive current builds up rapidly until Time 2, atwhich point drive motor 104 reaches approximately 500 rpm at Point 2Ashown in graph 410. Also at Time 2, the RMS drive current reachesapproximately 630 amps (indicated at Point 2B in graph 420), which isalmost 100% of the maximum RMS drive current that controller 102 cansupply, which in the example of FIG. 4 is 650 amps. At Time 2, thedirect battery discharge current has reached approximately about 150amps (as indicated by Point 2C).

As will be understood by one normally skilled in the art, drive motor104 may be controlled by varying the frequency and voltage applied tothe drive motor, for example, using PWM (Pulse Width Modulation) untilthe Base Speed of drive motor 104 (about 3000 rpm according to theexample illustrated in FIG. 4 ) is reached. For example, at the drivemotor rotational speed of 500 rpm shown at Time 2, the battery pack DCpower may be proportional to 150 amps times the battery pack voltage of100 volts. However, the phase voltage applied to drive motor 102 is onlyabout 18 volts, and the resulting AC power delivered to the drive motor104 is proportional to 650 amps times the phase voltage of 18 volts. Ascan be seen from this example, it is possible for the drive motor 104 todeliver relatively high torque at low to moderate vehicle speeds, whileconsuming a relatively low amount of battery power.

Moving onward from Time 2 towards Time 3, the rotational speed of drivemotor 104 (and the corresponding vehicle speed) continues to increasemore or less linearly as a result of the substantially constant drivingtorque.

Next, at Time 3, the rotational speed of drive motor 104 reaches about3000 rpm (Point 3A). At this drive motor speed, drive motor 104 ‘sees’the full battery voltage and further acceleration of the vehicle isaccomplished by field weakening. At Time 3 shown in FIG. 4 , the directbattery discharge current supplied from battery pack 106 reaches morethan 600 A. In the example of FIG. 4 , a relatively large battery packwould be required to provide such a high current. In some cases, even ifthe battery pack is relatively large, such a high battery dischargecurrent may be in excess of what the battery pack can safely supply. Forthis reason, it may be desirable to limit the RMS drive current and thedrive torque of the vehicle at higher drive motor speeds, which maycorrespondingly limit the discharge current from the battery pack 106,even in a situation where the vehicle operator requests maximum torqueby fully depressing the accelerator pedal 111.

Such an implementation is shown, by way of example, in FIG. 5 , whichmay illustrate the behavior of an example motor controller, such as themotor controller 102 shown in FIG. 1 . According to some examples, themotor controller 102 may execute code that takes the form of CurtisVehicle Control Language (VCL) code that controls the various componentsof vehicle 100. The code may, for instance, allow motor controller 102to control the process of converting the direct discharge currentobtained from battery pack 106 into RMS drive current.

FIG. 5 is a graph 500 that illustrates a relationship between the speedof a drive motor (represented by the VCL variable “ABS_Motor_RPM”) andan RMS drive current limit (represented by the VCL variable“BMS_Drive_Current_Limit”). The drive motor may be, for example, thedrive motor 104 shown in FIG. 1 . Graph 500 includes two curves that areeach associated with a respective range of drive motor rotationalspeeds, namely, a low-speed range and a high-speed range. Graph 500 alsoincludes a transition range between the two curves that is associatedwith a range of speeds that is between the low-speed and the high-speedranges.

At a high level, FIG. 5 is a graph 500 that motor controller 102 may beconfigured to define and/or store, as well as a set of values input 510that can be used by the motor controller 102 to define the set ofcurves. Each curve defines a set of relationships between a maximumdischarge current and a corresponding RMS drive current limit that setsthe maximum amount of RMS drive current that the motor controller maysupply to the drive motor when that curve is selected. Each curve may bevalid for a set of operating conditions that the motor controllerobtains from various components of the vehicle. These operatingconditions may take various forms.

As illustrated in the example of FIG. 5 , the operating conditions thatthe motor controller uses to define and select a given curve from theset of curves may include, for instance, the rotational speed of drivemotor 102 (e.g., measured in rpm), and/or a maximum discharge current ofbattery pack 106 at a given time. The operating conditions may takevarious other forms as well.

Based on the selected curve, motor controller 102 may map an operatingcondition, such as a maximum discharge current that the battery pack 106is capable of supplying at a given time, to an RMS drive current limitvalue that is defined by the selected curve. In general, the RMS drivecurrent limit specified by the selected curve may be directly correlatedwith the maximum direct discharge current that battery pack 106 iscapable of supplying at a given time.

The maximum discharge current that battery pack 106 can safely supplymay change over time. The battery management system (BMS) 108, which maybe a component of the battery pack 106 that manages and ensures safetyof the operation of the battery pack 106, may periodically report avalue that indicates the maximum discharge current to motor controller102.

In some instances, the rotational velocity of the drive motor 104 maynot be within any of the ranges associated with any of the curves thatform the set of curves. In such instances, the motor controller 102 mayuse the endpoints of the two closest curves to determine the RMS drivecurrent limit. For instance, if the rotational speed of the drive motor104 falls between an endpoint of a low speed curve and the startingpoint of a high-speed curve, the motor controller 102 may determine theRMS drive current limit by interpolating between the endpoint of thelow-speed curve and the starting point of the high-speed curve based onthe motor speed of the drive motor 104.

After determining an RMS drive current limit, motor controller 102 maythen limit the RMS drive current that motor controller 102 converts fromthe direct discharge current supplied by the battery pack 106, and thenapply the limited RMS drive current to drive motor 104. The functions ofobtaining the direct discharge current from the battery pack 106 andconverting the direct discharge current to an RMS drive current subjecta determined RMS drive current limit may take various forms.

Graph 500 includes a low speed curve (labelled “Low-Speed Range”) and ahigh-speed curve (labelled “High-Speed Range”) as well as a transitionrange (labelled “Transition Range”) that falls between the low-speedcurve and the high-speed curve. The high-speed curve and the low-speedcurve can be associated with, and valid for different ranges ofrotational speeds of drive motor 104. As an example, a first curve, suchas the low-speed curve represented in FIG. 5 , may be valid for a firstspeed range, such as a low-speed range. A second curve, such as thehigh-speed curve represented in FIG. 5 , may be valid for a second,different speed range of the drive motor 104, such as a high-speedrange. While two curves have been described for the purpose of example,it should be understood that the set of curves may include three or morecurves as well.

To select and utilize the RMS drive current limits defined by thevarious speed range curves, the motor controller 102 selects a givencurve from the set of curves based on the rotational speed of the drivemotor 104. Based on the selected curve, the motor controller 102determines an RMS drive current limit for motor controller 102.

According to the example of FIG. 5 , motor controller 102 may beconfigured to select the low-speed curve for a drive motor rotationalspeed range between 0 and 1000 rpm, the high-speed range for a drivemotor rotational speed range above 1800 rpm, and the transition rangefor a drive motor rotational speed range between 1000 and 1800 rpm.

Based on the rotational speed of drive motor 104, and the maximumdischarge current that may be supplied by the battery pack 106, motorcontroller 102 sets the RMS drive current limit. The RMS drive currentlimit in turn limits the maximum RMS drive current that motor controller102 may generate when converting direct discharge current from batterypack 106 to an RMS current, and thereby also limits the power draw frombattery pack 106.

According to some examples of this disclosure, motor controller 102 maybe configured to limit the RMS drive current by setting a VCL variable,such as the variable BMS_Drive_Current_Limit, to a particular value.Setting BMS_Drive_Current_Limit to a particular value may cause motorcontroller 102 to limit the RMS drive current limit. In someimplementations, the drive current limit may be represented as apercentage of the maximum possible RMS drive current that motorcontroller 102 may produce, as described above. Motor controller 102 maybe configured to programmatically control the production of RMS drivecurrent in various other manners as well.

Graph 500 includes a low-speed range, a high-speed range, and atransition range. If the rotational speed of the drive motor 104 fallsinto the low-speed range, motor controller 102 may set theBMS_Drive_Current_Limit variable to 90%, which causes motor controller102 to set the RMS drive current limit to 90% of the maximum amount ofRMS drive current that motor controller 102 is capable of producing. Inthe low-speed range, motor controller 102 provides a relatively lowphase voltage to drive motor 104, as described above with reference FIG.4 . Advantageously, while drive motor 104 operates in the low-speedrange, motor controller 102 can cause drive motor 104 to develop asubstantial amount of the maximum possible torque (as indicated by Point2B in graph 420) while expending a relatively small amount of batterydischarge current (Point 2C in graph 420). Consequently, while motorcontroller 102 and drive motor 104 operate in the low-speed range, themotor controller 102 may set BMS_Drive_Current_Limit to a highpercentage value without danger of exceeding any current limits of, oroverburdening, the battery pack 106.

The above examples describe the operation of a vehicle in the low-speedrange in the forward direction. However, it should be understood thatthe low-speed range and other rotational speed ranges may apply to theoperation of the vehicle in the reverse direction as well.

As another example, if the rotational speed of drive motor 104 fallsinto the high-speed range, motor controller 102 may set theBMS_Drive_Current_Limit variable to 40%, which causes motor controller102 to set the RMS drive current limit to 40% of maximum RMS drivecurrent of motor controller 102, as shown in FIG. 5 .

In the high-speed range, the phase voltage applied by the motorcontroller 102 may have increased to a point where the battery dischargecurrent reaches substantial values, as shown at Point 3B in graph 420.In such a situation, a relatively high battery discharge current mayexceed what battery pack 106 can safely supply. By limiting the RMSdrive current to 40% of the maximum-rated drive current value of themotor controller 102, the discharge current required from battery pack106 may be reduced to a value that the battery pack 106 can safelyprovide, even if the vehicle operator requests maximum torque by fullydepressing the accelerator pedal 111.

While the curves in FIG. 5 for the low-speed range and the high-speedrange are illustrated as being set to fixed percentages (90% and 40%),it should be understood that the RMS drive current limits in thelow-speed and high-speed ranges may vary based on the charge level ofbattery pack 106 (which may be represented with the VCL variableOrionPackDCL, in amps) and also based on the rotational speed of drivemotor 104. For example, the RMS drive current limit may vary within thelow and high-speed ranges, as discussed in more detail below withrespect to FIGS. 6 and 7 , respectively.

Further, if the rotational speed of drive motor 104 is slightly above1000 rpm, the value assigned to BMS_Drive_Current_Limit, and thecorresponding RMS drive current limit, may be slightly below 90%.Similarly, as the motor speed approaches 1800 rpm, the value assigned toBMS_Drive_Current_Limit may be slightly higher than 40%. The result is asmooth transition of torque applied by the drive motor 104 in thetransition range between the low-speed range and the high-speed range.The motor controller 102 may be configured to control the RMS drivecurrent limit in various other manners as well.

The motor controller 102 may use the transition range between thelow-speed and high-speed curves of graph 500 to define the RMS drivecurrent limit for rotational speeds of drive motor 104 between anendpoint of the low-speed range, (e.g., 1000 rpm in the example of FIG.5 ), and a starting point of the high-speed range, (e.g., 1800 rpm inthe example of FIG. 5 ). To determine the RMS drive current limit forspeeds within the transition range, motor controller 102 may beconfigured to interpolate (e.g., linearly interpolate) values forBMS_Drive_Current_Limit between (1) the endpoint of the low-speed range,and (2) the starting point of the high-speed range. As an example, ifthe rotational speed of drive motor 104 is 1600 rpm, the linearinterpolation between the low-speed range endpoint and the high-speedrange starting point (0.90 and 0.40, respectively) is equal to 0.775.This would correspond to an RMS drive current limit of 77.5% of themaximum RMS current.

Referring again to FIG. 5 , a set of input values 510 illustratesvariables that are stored in non-volatile memory of motor controller102, and may be used to establish the graph 500. More particularly, theset of input values 510 illustrates the storage in non-volatile memoryof motor controller 102 of various VCL variables that, when set as partof a larger VCL program, may define the rotational speeds associatedwith the low-speed range, the high-speed range, and the transitionrange. For example, the set of input values 510 includes a firstvariable, P_User40, which is set to 1000 rpm and defines the endpoint ofthe low-speed range. A second variable, P_User41, is set to 1800 rpm anddefines the starting point of the high-speed range.

Now that the operation of motor controller 102 with respect to a low andhigh-speed range has been described at a high level, additional detailsregarding the operation motor controller 102 while in the low-speedrange and high-speed range will be discussed with respect to FIGS. 6 and7 , respectively.

FIG. 6 illustrates a graph 600 of a curve associated with a low-speedrange and a set of input values 610 that may be used to define the graph600. For example, graph 600 may be associated with the low-speed rangeof graph 500, which motor controller 102 may select in response to therotational speed of drive motor 104 being within the range of 0-1000rpm, as discussed above.

The curve illustrated in graph 600 of FIG. 6 illustrates therelationship between maximum discharge current of battery pack 106(represented by the variable OrionPackDCL as reported by BMS 108) andRMS drive current limits. Accordingly, the motor controller 102 may usea VCL function to define graph 600, also referred to herein as alow-speed map or a low-speed curve, that can be used to determine thecorrespondence between a given input—a maximum discharge level ofbattery pack 106, in amps—and a corresponding RMS drive current limit,also in amps.

Once the graph 600 is defined, the motor controller 102 takes themaximum discharge current of battery pack 106 (i.e., OrionPackDCL inamps) as input and uses the defined low-speed map to determine anoutput. The output takes the form of a VCL map output variable(DCL_BoostControlMap_Output), which may be a percentage value that isthen used to set the RMS drive current limit, as noted above. Thislimits the amount of RMS drive current requested by the drive motor 102and thus the amount of discharge current provided by battery pack 106.

Graph 600 is defined by a set of points, which in the example of FIG. 6are represented by the VCL variables P_User42 (equal to 80% of themaximum RMS drive current), P_User43 (equal to 90% of the maximum RMSdrive current), P_User44 (equal to 100 amps), and P_User45 (equal to 200amps). Each of the aforementioned variables may be set and stored innon-volatile memory in motor controller 102.

Shown below is a code segment which illustrates one example of how thelow-speed boost map, (referred to as “DCL_BoostControlMap” in VCL code),may be implemented using the VCL Setup_MAP and Automate_MAP functions.

Setup_MAP(DCL_BoostControlMap,4, 0,  1638,  ;0 P_User44, P_User42,;OrionMaxDCL_Boost1 P_User45, P_User43, ;OrionMaxDCL_Boost2 1000,P_User43, ;1000 0,0, 0,0, 0,0) Automate_MAP(DCL_BoostControlMap,@OrionPackDCL)

The functions shown above may cause motor controller 102 to initializeand automatically update the low-speed map. For example, the motorcontroller 102 may execute the above code segment at initialization ofstart-up, and the code segment may run automatically thereafter. Thus,as the input (OrionPackDCL) changes, the output value of the low-speedmap, DCL_BoostControlMap_Output, changes accordingly. This map outputvariable may be used to set the value for BMS_Drive_Current_Limit, whichis then used to establish the RMS drive current limit.

The code segment above, in conjunction with the aforementioned variablesand other possible inputs, may cause motor controller 102 to define thecurve illustrated in graph 600. For instance, the curve illustrated ingraph 600 has a 5% RMS drive current limit at 0 amps maximum dischargecurrent from the battery pack 106. This starting point may beestablished by a separate VCL variable. The curve then increaseslinearly to an RMS drive current limit of 80% at 100 amps. From 100 ampsto 200 amps, the RMS drive current limit increases linearly from 80% to90%. Finally, from 200 amps to 1000 amps of maximum direct batterydischarge current, the RMS drive current limit stays constant at 90%.

As one example implementation, if the battery pack charge level (i.e.,the maximum discharge current of the battery pack 106) represented bythe input variable OrionPackDCL is 200 amps, the low-speed map shown inFIG. 6 will result in a value of 90% ultimately being assigned toBMS_Drive_Current_Limit (via the map output variableDCL_BoostControlMap_Output). This will cause drive motor 104 to producea high RMS drive current and a correspondingly high driving torque. Ifthe charge of the battery pack 106 decreases, the value of OrionPackDCLmay fall to 100 amps, in which case the low-speed range map output valuewill decrease to 80%, thereby decreasing the discharge current from thebattery pack 106 somewhat. At the low rotational speeds of drive motor104 that are associated with the low-speed range, the discharge currentdrawn from the battery pack 106 may be relatively low, even atrelatively high values of motor torque, as shown at Point 2C of FIG. 4 .As discussed above, this may correspond to a relatively lowforward-speed of the vehicle that nonetheless requires a relatively hightractive effort, due to the terrain or other possible considerations.

FIG. 7 illustrates a graph 700 of a curve associated with a high-speedrange and a set of input values 710 that may be used to define the graph700. For example, graph 700 may be associated with the high-speed rangeof graph 500, which motor controller 102 may select in response to therotational speed of drive motor 104 being above 1800 rpm, as seen inFIG. 5 .

As discussed above with respect to the curve shown in FIG. 6 , the curveillustrated in graph 700 of FIG. 7 illustrates the relationship betweenmaximum discharge levels of battery pack 106 (represented by thevariable OrionPackDCL as reported by BMS 108) and RMS drive currentlimits. Accordingly, the motor controller 102 may use a VCL function todefine graph 700, also referred to herein as a high-speed map or ahigh-speed curve, that can be used to determine the correspondencebetween a given input—a maximum discharge level of battery pack 106—anda corresponding RMS drive current limit.

Once the graph 700 is defined, the motor controller 102 takes themaximum discharge current of battery pack 106 (i.e., OrionPackDCL inamps) as input and uses the defined high-speed map to determine anoutput. The output takes the form of a VCL map output variable(DCL_CurrentReductionMap_Output), which may be a percentage value thatis then used to set the RMS drive current limit, as noted above. Thislimits the amount of RMS drive current requested by the drive motor 102and thus the amount of discharge current provided by battery pack 106.

Graph 700 is defined by a set of points, which in the example of FIG. 7are represented by the VCL variables P_User25 (equal to 30% ofBMS_Drive_Current_Limit), P_User26 (equal to 40% ofBMS_Drive_Current_Limit), P_User47 (equal to 100 amps), and P_User49(equal to 200 amps). Each of the aforementioned variables may be set andstored in non-volatile memory of motor controller 102.

Shown below is a code segment which illustrates one example of how thehigh-speed map, (referred to as “DCL_CurrentReductionMap” in VCL code),may be implemented using the VCL Setup_MAP and Automate_MAP functions.

Setup_MAP(DCL_CurrentReductionMap,4, ;MAP ID = 3   0, 1638, P_User47,P_User25, P_User49, P_User26, 1000, P_User26,   0,0,   0,0,   0,0)Automate_MAP(DCL_CurrentReductionMap, @OrionPackDCL);

The functions shown above may cause motor controller 102 to initializeand automatically update the high-speed map. For example, the motorcontroller 102 may execute the above code segment at initialization ofstart-up, and the code may run automatically thereafter. Thus, as theinput (OrionPackDCL) changes, the output value of the high-speed map,DCL_CurrentReductionMap_Output, changes accordingly. This map outputvariable may then be set as BMS_Drive_Current_Limit, establishing theRMS drive current limit.

The code segment above, in conjunction with the aforementioned variablesand other possible inputs, may cause motor controller 102 to define thecurve illustrated in graph 700. For instance, the curve illustrated ingraph 700 has a 5% RMS drive current limit at 0 amps maximum dischargecurrent from the battery pack. This starting point may be established bya separate VCL variable. The curve then increases linearly to an RMSdrive current limit of 30% at 100 amps. From 100 amps to 200 amps, theRMS drive current limit increases linearly from 30% to 40%. Finally,from 200 amps to 1000 amps of maximum direct battery discharge current,the RMS drive current limit stays constant at 40%.

As an example implementation, if the battery pack charge level (i.e.,the maximum discharge current of the battery pack 106) represented bythe input variable OrionPackDCL is 200 amps, the high-speed map shown inFIG. 6 will result in a value of 40% ultimately being assigned toBMS_Drive_Current_Limit (via the map output variableDCL_CurrentReductionMap_Output). This will cause drive motor 104 toproduce a moderate RMS drive current and a correspondingly moderatedriving torque. If the charge of the battery pack 106 decreases, thevalue of OrionPackDCL may fall to 100 amps, in which case the high-speedmap output will decrease to 30%, thereby decreasing the dischargecurrent from the battery pack 106 to a lower value.

By limiting the RMS drive current in this way at the high rotationalspeeds associated with the high-speed range, the motor controller 102may limit the discharge current drawn from the battery pack 106. This,in turn, may reduce the possibility that an overly high dischargecurrent will be drawn from the battery pack 106, as discussed above withrespect to FIG. 4 . Further, limiting the RMS drive current in this waymay extend the charge of the battery pack 106 as well by reducing torqueand drawing less discharge current.

In some implementations, the mapping functions discussed above thatdefine graphs 600 and 700 may run substantially continuously andsimultaneously during operation of the vehicle 100. Furthermore, themapping functions may run independently of the other operations of themotor controller 102. Accordingly, the motor controller 102 may, basedon the maximum battery discharge input received from the BMS 108,determine and store outputs from both the low-speed curve and thehigh-speed curve multiple times per second (e.g., 200 times per second).In such an example, once the motor controller 102 determines therotational speed of the drive motor 104 and identifies the correspondingcurve, the motor controller 102 may select the corresponding output.

In some other implementations, the mapping functions may runcontinuously as discussed above, but the motor controller 102 might notdetermine an output from either curve until after the motor controller102 determines the rotational velocity of the drive motor 104 at a giventime. In this way, the motor controller 102 may determine and store anoutput from only the curve that corresponds to the rotational velocityof the drive motor 104. Further, in a situation where the rotationalvelocity of the drive motor 104 is in the transition range, the motorcontroller 102 might not determine an output from either curve, insteadproceeding with an interpolation between their respective endpoints, asdiscussed above.

In still other implementations, the mapping functions might not runcontinuously, as discussed above. Rather, the motor controller 102 may,based on the determined rotational velocity of the drive motor 104 at agiven time, execute only the mapping function that corresponds to thedetermined rotational velocity, and then determine the correspondingoutput accordingly. Further, if the rotational velocity of the drivemotor 104 at a given time is within the transition range, the motorcontroller 102 may execute neither mapping function, instead proceedingwith an interpolation between their respective endpoints, which may bedescribed by the input variables discussed above. Numerous otherpossibilities for the execution frequency of the mapping functions andobtaining outputs therefrom are also possible, including combinations ofthe possibilities discussed above.

FIG. 8 shows two graphs of an example acceleration-deceleration event ofa vehicle, such as the vehicle 100. In particular, FIG. 8 illustrateshow the RMS drive current limit, represented by the VCL variableBMS_Drive_Current_Limit, is updated as the vehicle 100 accelerates anddecelerates through different speed ranges. Graph 810 shows the speed ofthe drive motor 104, and graph 820 shows the resulting value of theBMS_Drive_Current_Limit. Both graphs 810 and 820 are shown as a functionof time. During the acceleration-deceleration event of FIG. 8 , thevalue of OrionPackDCL, representing the maximum discharge current of thebattery pack 106 in amps, as transmitted over the CANbus from the BMS108, is constant at a value of 200 amps.

Using the example values shown in FIG. 8 , the vehicle 100 is in thelow-speed range from Point 0 until the motor speed reaches 1000 rpm atPoint 1, as shown in graph 810. In the low-speed range, theBMS_Drive_Current_Limit shown in graph 820 is 90%, which motorcontroller 102 obtains using the low-speed range map shown in graph 600of FIG. 6 , for the input value of OrionPackDCL equal to 200 amps.

Later, from Point 2 until Point 3, while the motor speed is above 1800rpm, the vehicle 100 is in the high-speed range. In this range betweenPoint 2 and Point 3, motor controller 102 assignsBMS_Drive_Current_Limit a value of 40%, which motor controller 102obtains using the high-speed range map shown in graph 700 of FIG. 7 ,for the input value of OrionPackDCL equal to 200 amps.

In the transition range between Point 1 and Point 2 during acceleration,and again between Point 3 and Point 4 during deceleration, motorcontroller 102 determines the value of BMS_Drive_Current_Limit bylinearly interpolating between the endpoint of the low-speed range mapdepicted in graph 600 and the high-speed range map of graph 700. Upondeceleration below 1000 rpm, the drive motor 104 returns to the lowspeed range, and the motor controller 102 assignsBMS_Drive_Current_Limit a value of 90% once again.

As can be seen in FIG. 8 , the result of motor controller 102 using themaps discussed above is: (1) the application of high motor torque in thelow-speed range, (2) a gradual decrease of motor torque as the motoraccelerates through the transition range, (3) a relatively lower motortorque in the high-speed range, and (4) an increase in motor torque asthe motor decelerates back to the low-speed range.

FIG. 9 illustrates a first graph 910 and a second graph 920 of anacceleration-deceleration event similar to the one depicted in FIG. 8 .However, in the acceleration-deceleration event shown in FIG. 9 , thebattery pack 106 is at a relatively low state of charge, and the maximumdischarge current communicated by BMS 108 as the variable OrionPackDCLis only 100 amps. As may be seen in graph 920, theBMS_Drive_Current_Limit in the low-speed range has been reduced to 80%of the maximum RMS drive current. It should be noted that, even thoughthe BMS_Drive_Current_Limit is 80%, the actual discharge current fromthe battery pack 106 may be quite low to accommodate the low value ofOrionPackDCL. In the high-speed range of graph 920, theBMS_Drive_Current_Limit may be only 30%, which may reduce thepossibility that the discharge current of battery pack 106 reachesexcessive values.

FIG. 10 illustrates a graph 1000 showing another example implementationfor selecting an RMS drive current limit, according to some embodiments.Graph 1000 shows a division of the possible motor speeds into alow-speed range and a high-speed range. Operation of the motorcontroller 102 according to the implementation illustrated in graph 1000may be similar to the techniques illustrated in FIG. 5 and discussedabove, except that there is no transition range. For example, the motorcontroller 102 may be configured to set an RMS drive current limit basedon the low-speed range map shown in FIG. 6 at startup. The motorcontroller 102 may continue using the low-speed range map, including fordrive motor speeds that would otherwise be in the transition range ofFIG. 5 , until the speed of the drive motor 104 increases past the valuecorresponding to the bottom end of the high-speed range (represented bythe VCL variable P_User41). If the speed of the drive motor 104 crossesthis threshold, the motor controller 102 sets the value ofBMS_Drive_Current_Limit according to the high-speed range map asillustrated in graph 700. The motor controller 102 may then continueusing the high-speed range map, including for drive motor speeds thatwould otherwise be in the transition range of FIG. 5 , until the speedof the drive motor 104 falls below the value corresponding to the topend of the low-speed range (represented by the VCL variable P_User40).When the drive motor speed crosses this lower threshold, the motorcontroller 102 sets the BMS_Drive_Current_Limit using the low-speed mapas illustrated in graph 600.

It will be appreciated that when the alternative embodiment depicted ingraph 1000 is utilized, operation of the vehicle may be analogous to theoperation of a vehicle equipped with a manual multi-speed transmissionwhen there is a change in the transmission gear ratio.

As described above, various vehicle configurations of this disclosuremay utilize multiple different gears. According to some implementations,motor controller 102 may be configured to store and select from adifferent set of curves based on the currently-engaged gear of thevehicle. For example, if the vehicle is engaged in a low gear, the motorcontroller 102 may be configured to select form a first set of curves,which may comprise a low-speed range curve for the low gear, and ahigh-speed range gear for the low gear. If the vehicle is engaged in ahigh gear, motor controller 102 may be configured to select from asecond set of curves that may comprise a low-speed range curve for thehigh gear and a high-speed range curve for the high gear. The differentsets of curves that may be associated with different gears may takevarious other forms as well.

As described herein with respect to FIGS. 5-7 , motor controller 102 maybe configured to select, based on the rotational speed of the drivemotor 104, a curve that defines a relationship between the maximumdischarge current of the battery pack 106 and the RMS drive currentlimit. As described with respect to FIGS. 5-7 , the endpoints thatdefine each of the speed ranges that are fixed values. For example, thelow-speed range illustrated in FIG. 5 has a range from 0 to 1000 rpm.

However, according to yet another embodiment, the endpoints that defineeach of the speed ranges may be variable. For example, an endpoint ofthe low-speed range may vary from 600 to 1000 rpm. Further, theendpoints that define some or all of the speed ranges may vary based ondifferent factors. For instance, the endpoints of a speed range may varybased on the currently-engaged gear of the vehicle, the maximumdischarge current of the battery pack 106, or various other factors aswell.

B. Large Battery Configurations

The discussion above has involved obtaining relatively high propulsiontorque at low vehicle speeds when the battery pack 106 is relativelysmall. A small battery pack may be defined for the purpose of theexamples herein as a battery pack having a capacity such that it cannotsupply sufficient drive current to provide full motor torque at alluseful vehicle speeds except in short bursts not exceeding a few tens ofseconds.

However, the techniques above also provide advantages for a vehicleequipped with a relatively large battery pack. For the purpose of theexamples herein, a large battery pack may be defined as a battery packhaving a capacity such that it can provide sufficient drive current toallow the motor to operate at substantially full torque output forlonger periods of time and at moderate to high vehicle speeds.

FIG. 11 shows a graph 1100 of the steady state maximum performancecharacteristics of a typical drive motor, such as drive motor 104, thatmay be used in some implementations. The performance curve illustratedin the example of graph 1100 is for a 3-phase AC induction motormanufactured by HPEVS, as one possible example of the drive motor 104.Other types of drive motors such as a surface permanent magnet or othertypes of traction motors may also be used.

As shown in FIG. 11 , the drive motor 104 may provide substantiallyconstant torque of about 155 N-m accelerating from zero speed to about3300 rpm. The DC current drawn from battery pack 106 in this sameinterval increases from about 100 amps at zero speed until 655 amps at3300 rpm. At speeds higher than 3300 rpm the motor ‘sees’ full batteryvoltage, and the motor controller 102 enters the field-weakening regionwhere the motor torque produced by drive motor 104 begins to decrease.

Even though a large battery can supply the high discharge currentsinvolved, it may be beneficial in many applications to limit vehicleperformance at moderate to high vehicle speeds in order to increase theoperating range of the vehicle.

Accordingly, graph 1100 of FIG. 11 is also overlain with a dashed lineindicating a maximum RMS drive current that may be imposed by the motorcontroller 102, similar to the graph 500 shown in FIG. 5 . In the graph1100, three speed ranges are included: a low-speed range, a mid-speedrange, and a high-speed range. These are separated by two respectivetransition ranges. Similarly, the parameters of the drive current limitfor each of the three speed ranges may be mapped to the maximumdischarge current in curves similar to those shown in FIGS. 6 and 7 .Thus, the RMS drive current limit may be adjusted accordingly to providea relatively high propulsion torque in the low-speed range, to providereduced battery pack discharge current in the mid-speed range, andfurther reduced battery discharge current in the high-speed range,thereby extending the range of battery pack 106 in all three ranges. Theembodiment described with respect to FIG. 11 may provide various otheradvantages as well.

C. VCL Code

As noted above, motor controller 102 may control various functionsrelated to the operation of vehicle 100, including functions related togenerating an RMS drive current from a direct battery discharge currentreceived from BMS 108. At a high level, motor controller 102 may includea computing device that may be configured to obtain inputs (e.g.,periodically), execute a control loop and other functions based on theobtained inputs, and generate one or more outputs based on the output ofthe executed functions.

Further, all CANbus communications, function evaluations, mapcomputations, etc. may be executed in the background and runcontinuously. All functions that deal with processing information sentover the CANbus from BMS 108 are handled in a BMS_Control module. Thisincludes handling and processing of fault messages and exception statesas well as dealing with other performance limits that may be imposed.

Below is a section of pseudocode that illustrates one possible exampleof a control loop for controlling RMS drive current and voltage. At ahigh level, the control loop is an outermost or top-level loop thatexecutes repeatedly, for instance, approximately 200-300 times persecond. The example control loop may be written in VCL (Vehicle ControlLanguage) that is executable by a motor controller 102 such as, forexample, a Curtis motor controller. It should be understood that the VCLcode may be stored in various types of non-transitory computer-readablemedia, such as non-volatile random access memory (NVRAM), flash memory,electrically erasable programmable read-only memory (EEPROM), diskmemory, phase change memory, or the like.

MainLoop:  Enter BMS_Control ;Checks status of BMS messages anddetermines value of ;of the RMS current limits  Enter VehicleControl_T4;Checks status of Driver Controls and determines the percent ;of themaximum RMS Current to be supplied/absorbed by ;motor and controller Call Handle_Drive_Current_Limit ;Sets drive current and regen currentlimits Goto MainLoop

At a high level, the main control loop calls three subroutines: (1) abattery management system control subroutine (BMS_Control), as notedabove, (2) a vehicle control subroutine (VehicleControl_T4), and (3) adrive current limit handling subroutine (Handle_Drive_Current_Limit).The main control loop shown above is but one example and may includemore or fewer function calls or take various other forms as well.

The VehicleControl_T4 subroutine handles functions that deal withprocessing information from the vehicle and driver controls 110. Thefunctions carried out in this module deal with handling of the throttlecommands that control the actual torque provided or absorbed by drivemotor, various safety functions, forward and reverse handling and otherfunctions normally required to operate a vehicle safely. For example,the section of pseudocode below illustrates one possible example of VCLcode that may be executed when the VehicleControl_T4 subroutine isexecuted, and which controls RMS drive current limit in the variousspeed ranges as described above. The following discussion of thepseudocode shown below is generally consistent with FIG. 5 and theassociated description.

if (AllowSmoothBoostTransitions = ON)  begin  ;Begin Smooth TransitionsLogic   if (ABS_Motor_RPM <= P_User40)    begin ;Low Speed Boost MAP2Output     BoostTrackingCode = 2     BMS_Drive_Current_Limit =DCL_BoostControlMap_Output ; Low Speed BoostControl Map2    BMS_Regen_Current_Limit = CCL_CurrentReductionMap_Output;    end;  else if (ABS_Motor_RPM < P_User41)    begin ;Transition RangeInterpolation     BoostTrackingCode = 3     BMS_Drive_Current_Limit =MAP_TWO_POINTS(ABS_Motor_RPM,P_User40,P_User41,MAP2_Output,MAP3_Output);    BMS_Regen_Current_Limit = CCL_CurrentReductionMap_Output;    end  else  ;  (ABS_Motor_RPM >= P_User41)    begin     BoostTrackingCode =4 ;HiSpeed Range MAP3 Output     BMS_Drive_Current_Limit =DCL_CurrentReductionMap_Output;     BMS_Regen_Current_Limit =CCL_CurrentReductionMap_Output;    end  end   ;End Smooth TransitionsLogic

The pseudocode above, when executed, may cause motor controller 102 toselect a map that is associated one of two speed ranges (a low-speedrange, or a high speed), or the transitional range, based on therotational speed of drive motor 104 (indicated by the variableABS_MOTOR_RPM). After selecting a given map or the transition range, themotor controller 102 then determines the RMS drive current limit usingthe map associated with the selected speed range, or by interpolatingbetween the two.

For example, if the speed of the drive motor 104 is less than or equalto the variable P_User40 (1000 rpm in the example of FIG. 5 ) the motorcontroller 102 sets the BMS_Drive_Current_Limit variable equal the valuefrom the low-speed range map based on the maximum direct batterydischarge current (as indicated by the input variable OrionPackDCL) asdescribed above with respect to FIG. 6 .

Alternatively, if the speed of the drive motor 104 is greater than orequal to the value of P_User41 (1800 rpm in the example of FIG. 5 )motor controller 102 sets the BMS_Drive_Current_Limit variable equal tothe value from the high-speed range map based on the maximum directbattery discharge current (as indicated by the input variableOrionPackDCL) as described above with respect to FIG. 7 .

Also, as described above, the OrionPackDCL value as reported to motorcontroller 102 by BMS 108 may change periodically. In response todetermining that the value of OrionPackDCL has changed (e.g., via anupdated value being received via the CANbus), motor controller 102 mayupdate the values of the maps, and then update the value ofBMS_Drive_Current_Limit accordingly.

If the speed of the drive motor 104 is greater than P_User40 but lessthan P_User41, motor controller 102 may determine the value ofBMS_Drive_Current_Limit by linear interpolation using the VCL-providedfunction, MAP_TWO_POINTS. The endpoints for the linear interpolation ofthe independent variable on the x-axis are the fixed-speed pointsP_User40 and P_User41. The points on the dependent y-axis are thevariables Map2_Output and Map3_Output which, in turn, are functions ofthe value of the OrionPackDCL variable. Examples of linear interpolationin the transition range can be seen, by way of example, in FIG. 8 andFIG. 9 . The MAP_TWO_POINTS function is but one example of amathematical function that may be used to linearly interpolate betweentwo points.

The third subroutine of the main control loop,Handle_Drive_Current_Limit, handles functions that deal with the finalassignment of the RMS drive current limit that is to be carried out bythe motor controller 102. For example, the section of pseudocode belowillustrates one possible example of VCL code that may be executed whenthe Handle_Drive_Current_Limit subroutine is executed.

Handle_Drive_Current_Limit: Drive_Current_Limit =BMS_Drive_Current_Limit  ;Limits maximum value of RMS phase current ;return

As shown above, Drive_Current_Limit, which may be the ultimate variablethat enforces the drive current limit on the drive motor 104, may be setto the value of BMS_Drive_Current_Limit that was determined from theVehicleControl_T4 subroutine.

In addition, while examples of VCL code that may be used to implementthe techniques of this disclosure have been described, it should beunderstood that various other programming languages and code may also beused to implement the techniques of this disclosure.

Turning now to FIG. 12 , a flowchart is shown illustrating a method 1200for operating a motor controller of a vehicle according to some of theexamples discussed herein. The method 1200 begins at block 1202 whereina motor controller, such as the motor controller 102, may determine themaximum discharge current from the battery pack 106. This value may beread from the CANbus as reported by the BMS 108, as discussed above, andmay be represented by the variable OrionPackDCL.

At block 1204, the motor controller 102 may determine a rotationalvelocity of the drive motor 104. For example, the speed of the drivemotor 104 may be read into the Curtis variable ABS_Motor_RPM. The speedof the drive motor 104 may be reported to the motor controller 102 by aconventional shaft speed encoder or a quadrature encoder connected toappropriate terminals of the motor controller 102. Other possibilitiesalso exist.

At block 1206, the motor controller 102 may, based on the determinedrotational velocity of the drive motor 104, identify a curve thatdefines a relationship between the maximum discharge current of thebattery pack 106 and a drive current limit of the motor controller 102.As discussed above, if the motor controller 102 determines that thedrive motor 104 is operating in the low-speed range, the motorcontroller 102 may identify the curve shown in FIG. 6 , which defines arelationship between the maximum discharge current of the battery pack106 and the RMS drive current limit of the motor controller 102.

At block 1208, the motor controller 102 may, based on the identifiedcurve and the determined maximum discharge current of the battery pack106, determine the drive current limit of the motor controller 102. Forexample, the motor controller 102 may use the determined maximumdischarge current of the battery pack 106 as an input for the identifiedcurve, which may map to an output value that indicates the drive currentlimit to be used by the motor controller 102.

At block 1210, the motor controller 102 may convert a discharge currentfrom the battery pack to a drive current subject to the determined drivecurrent limit. For instance, as discussed above, the motor controller102 may determine an indication of a position of an accelerator pedal ofthe vehicle. The position of the accelerator pedal may correspond to adrive current requested by the operator of the vehicle. The motorcontroller 102 may convert the discharge current from the battery packto the drive current based on the indication of the position of theaccelerator pedal, but may limit the requested drive current accordinglyif it exceeds the determined drive current limit.

At block 1212, the motor controller 102 may supply the drive current tothe drive motor 104. In some implementations, if the requested drivecurrent based on the position of the accelerator pedal complies with thedetermined drive current limit (e.g., it is below the limit), then themotor controller may supply the requested drive current. Alternatively,the motor controller 102 may supply a drive current to the drive motor104 that is equal to the drive current limit, if the requested drivecurrent exceeded the limit.

As noted above, the motor controller 102 may execute some or all of theblocks of method 1200 repeatedly, for instance, in a loop. In someimplementations, the method 1200 may include more or fewer blocks, whichmay occur in orders other than those specified with respect to FIG. 12 .

Various implementations and examples associated with the presentembodiment related to providing and controlling drive current in avehicle motor have been described. However, it should be understood thatthe present embodiment may take various other forms as well.

III. Conclusion

Additionally, references herein to “embodiment” means that a particularfeature, structure, or characteristic described in connection with theembodiment can be included in at least one example embodiment of aninvention. The appearances of this phrase in various places in thespecification are not necessarily all referring to the same embodiment,nor are separate or alternative embodiments mutually exclusive of otherembodiments. As such, the embodiments described herein, explicitly andimplicitly understood by one skilled in the art, can be combined withother embodiments.

The specification is presented largely in terms of illustrativeenvironments, systems, procedures, steps, logic blocks, processing, andother symbolic representations that directly or indirectly resemble theoperations of data processing devices coupled to networks. These processdescriptions and representations are typically used by those skilled inthe art to most effectively convey the substance of their work to othersskilled in the art. Numerous specific details are set forth to provide athorough understanding of the present disclosure. However, it isunderstood to those skilled in the art that certain embodiments of thepresent disclosure can be practiced without certain, specific details.In other instances, well known methods, procedures, components, andcircuitry have not been described in detail to avoid unnecessarilyobscuring aspects of the embodiments. Accordingly, the scope of thepresent disclosure is defined by the appended claims rather than theforgoing description of embodiments.

The invention claimed is:
 1. A vehicle comprising: a drive motor; abattery pack: at least one processor; a non-transitory computer-readablestorage medium; and program instructions stored on the non-transitorycomputer-readable storage medium that are executable by the at least oneprocessor to cause the vehicle to: determine a maximum discharge currentof the battery pack; identify a first curve that defines, for a firstrange of rotational velocities of the drive motor, a first relationshipbetween the maximum discharge current of the battery pack and a firstdrive current limit of the vehicle; identify a second curve thatdefines, for a second range of rotational velocities of the drive motor,a second relationship between the maximum discharge current of thebattery pack and a second drive current limit of the vehicle; determinea rotational velocity of the drive motor that is between the first rangeof rotational velocities and the second range of rotational velocities;identify an endpoint of the first curve; identify a starting point ofthe second curve; determine a third drive current limit based on theendpoint of the first curve and the starting point of the second curve;convert a discharge current from the battery pack to a drive currentsubject to the determined third drive current limit; and supply thedrive current to the drive motor.
 2. The vehicle of claim 1, wherein thefirst drive current limit comprises a percentage of a maximum drivecurrent that the vehicle is capable of supplying to the drive motor. 3.The vehicle of claim 1, further comprising program instructions storedon the non-transitory computer-readable medium that are executable bythe at least one processor such that the vehicle is configured to:determine an updated maximum discharge current of the battery pack; andbased on the updated maximum discharge current of the battery pack,update the first drive current limit of the vehicle.
 4. The vehicle ofclaim 1, further comprising program instructions stored on thenon-transitory computer-readable medium that are executable by the atleast one processor such that the vehicle is configured to: determine anupdated maximum discharge current of the battery pack; and based on theupdated maximum discharge current of the battery pack, update the seconddrive current limit of the vehicle.
 5. The vehicle of claim 1, whereinthe determined rotational velocity of the drive motor is a firstrotational velocity, and wherein the vehicle further comprises programinstructions stored on the non-transitory computer-readable medium thatare executable by the at least one processor such that the vehicle isconfigured to: determine a second rotational velocity of the drive motorthat is within the second range of rotational velocities; based on thesecond curve and the determined maximum discharge current of the batterypack, determine the second drive current limit of the vehicle; convert asecond discharge current from the battery pack to a second drive currentsubject to the determined second drive current limit; and supply thesecond drive current to the drive motor.
 6. The vehicle of claim 1,wherein the program instructions that are executable by the at least oneprocessor such that the vehicle is configured to determine the thirddrive current limit based on the endpoint of the first curve and thestarting point of the second curve comprise program instructions thatare executable by the at least one processor such that the vehicle isconfigured to: determine the third drive current limit by interpolatingbetween the endpoint of the first curve and the starting point of thesecond curve.
 7. The vehicle of claim 1, further comprising programinstructions stored on the non-transitory computer-readable medium thatare executable by the at least one processor such that the vehicle isconfigured to: determine one or both of the first range of rotationalvelocities and the second range of rotational velocities of the drivemotor based on the determined maximum discharge current of the batterypack.
 8. The vehicle of claim 1, further comprising program instructionsstored on the non-transitory computer-readable medium that areexecutable by the at least one processor such that the vehicle isconfigured to: determine an indication of a position of an acceleratorpedal of the vehicle, wherein the program instructions that areexecutable by the at least one processor such that the vehicle isconfigured to convert the discharge current from the battery pack to thedrive current subject to the determined third drive current limitcomprise instructions that are executable by the at least one processorsuch that the vehicle is configured to: convert the discharge currentfrom the battery pack to the drive current based on the indication ofthe position of the accelerator pedal.
 9. The vehicle of claim 1,wherein the at least one processor comprises at least one motorcontroller.
 10. A motor controller comprising: at least one processor; anon-transitory computer-readable storage medium; and programinstructions stored on the non-transitory computer-readable storagemedium that are executable by the at least one processor such that themotor controller is configured to: determine a maximum discharge currentof a battery pack of a vehicle, wherein the motor controller is coupledto the battery pack and a drive motor of the vehicle; identify a firstcurve that defines, for a first range of rotational velocities of thedrive motor, a first relationship between the maximum discharge currentof the battery pack and a first drive current limit of the motorcontroller; identify a second curve that defines, for a second range ofrotational velocities of the drive motor, a second relationship betweenthe maximum discharge current of the battery pack and a second drivecurrent limit of the motor controller; determine a rotational velocityof the drive motor that is between the first range of rotationalvelocities and the second range of rotational velocities; identify anendpoint of the first curve; identify a starting point of the secondcurve; determine a third drive current limit based on the endpoint ofthe first curve and the starting point of the second curve; convert adischarge current from the battery pack to a drive current subject tothe determined third drive current limit; and supply the drive currentto the drive motor.
 11. The motor controller of claim 10, wherein thefirst drive current limit comprises a percentage of a maximum drivecurrent that the motor controller is capable of supplying to the drivemotor.
 12. The motor controller of claim 10, further comprising programinstructions stored on the non-transitory computer-readable medium thatare executable by the at least one processor such that the motorcontroller is configured to: determine an updated maximum dischargecurrent of the battery pack; and based on the updated maximum dischargecurrent of the battery pack, update the first drive current limit of themotor controller.
 13. The motor controller of claim 10, furthercomprising program instructions stored on the non-transitorycomputer-readable medium that are executable by the at least oneprocessor such that the motor controller is configured to: determine anupdated maximum discharge current of the battery pack; and based on theupdated maximum discharge current of the battery pack, update the seconddrive current limit of the motor controller.
 14. The motor controller ofclaim 10, wherein the determined rotational velocity of the drive motoris a first rotational velocity, and wherein the motor controller furthercomprises program instructions stored on the non-transitorycomputer-readable medium that are executable by the at least oneprocessor such that the motor controller is configured to: determine asecond rotational velocity of the drive motor that is within the secondrange of rotational velocities; based on the second curve and thedetermined maximum discharge current of the battery pack, determine thesecond drive current limit of the motor controller; convert a seconddischarge current from the battery pack to a second drive currentsubject to the determined second drive current limit; and supply thesecond drive current to the drive motor.
 15. The motor controller ofclaim 10, wherein the program instructions that are executable by the atleast one processor such that the motor controller is configured todetermine the third drive current limit based on the endpoint of thefirst curve and the starting point of the second curve comprise programinstructions that are executable by the at least one processor such thatthe motor controller is configured to: determine the third drive currentlimit by interpolating between the endpoint of the first curve and thestarting point of the second curve.
 16. The motor controller of claim10, further comprising program instructions stored on the non-transitorycomputer-readable medium that are executable by the at least oneprocessor such that the motor controller is configured to: determine oneor both of the first range of rotational velocities and the second rangeof rotational velocities of the drive motor based on the determinedmaximum discharge current of the battery pack.
 17. The motor controllerof claim 10, further comprising program instructions stored on thenon-transitory computer-readable medium that are executable by the atleast one processor such that the motor controller is configured to:determine an indication of a position of an accelerator pedal of thevehicle, wherein the program instructions that are executable by the atleast one processor such that the motor controller is configured toconvert the discharge current from the battery pack to the drive currentsubject to the determined third drive current limit compriseinstructions that are executable by the at least one processor such thatthe motor controller is configured to: convert the discharge currentfrom the battery pack to the drive current based on the indication ofthe position of the accelerator pedal.
 18. A non-transitorycomputer-readable medium, wherein the non-transitory computer-readablemedium is provisioned with program instructions that, when executed byat least one processor, cause a vehicle to: determine a maximumdischarge current of a battery pack of the vehicle; identify a firstcurve that defines, for a first range of rotational velocities of adrive motor of the vehicle, a first relationship between the maximumdischarge current of the battery pack and a first drive current limit ofthe vehicle; identify a second curve that defines, for a second range ofrotational velocities of the drive motor, a second relationship betweenthe maximum discharge current of the battery pack and a second drivecurrent limit of the vehicle; determine a rotational velocity of thedrive motor that is between the first range of rotational velocities andthe second range of rotational velocities; identify an endpoint of thefirst curve; identify a starting point of the second curve; determine athird drive current limit based on the endpoint of the first curve andthe starting point of the second curve; convert a discharge current fromthe battery pack to a drive current subject to the determined thirddrive current limit; and supply the drive current to the drive motor.19. The non-transitory computer-readable medium of claim 18, wherein theprogram instructions that, when executed by at least one processor,cause the vehicle to determine the third drive current limit based onthe endpoint of the first curve and the starting point of the secondcurve comprise program instructions that, when executed by at least oneprocessor, cause the vehicle to: determine the third drive current limitby interpolating between the endpoint of the first curve and thestarting point of the second curve.
 20. The non-transitorycomputer-readable medium of claim 18, wherein the non-transitorycomputer-readable medium is also provisioned with program instructionsthat, when executed by at least one processor, cause the vehicle to:determine one or both of the first range of rotational velocities andthe second range of rotational velocities of the drive motor based onthe determined maximum discharge current of the battery pack.